package com.chengliang.zuoye.service;

import com.chengliang.zuoye.bean.Menu;

import java.util.List;

/**
 * @author jerry
 */
public interface MenuService {


    /**
     * 通过角色ID查询该角色拥有的一级菜单ID
     * @param roleId 角色ID
     * @return
     *  菜单ID的集合
     */
    List<Integer> getOneMenuListByRoleId(Integer roleId);

    /**
     * 通过角色ID查询该角色拥有的二级菜单ID
     * @param roleId 角色ID
     * @return
     *  菜单ID的集合
     */
    List<Integer> getTwoMenuListByRoleId(Integer roleId);

    /**
     * 不区分层级获取所有的菜单项
     * @return
     */
    List<Menu> menuList();

    /**
     * 获取一级菜单 包含一级菜单的子菜单
     * @return
     */
    List<Menu> oneMenuList();

    /**
     * 根据ID修改菜单状态
     * @param id 菜单ID
     * @param status 状态值
     * @return 是否操作成功
     */
    boolean changeStatus(Integer id, Boolean status);


    /**
     * 根据ID删除单个菜单
     * @param menuId 菜单ID
     * @return 是否操作成功
     */
    boolean dropMenuById(Integer menuId);

    /**
     * 获取所有启用的父级菜单
     * @return
     */
    List<Menu> onlyOneMenuList();

    /**
     * 添加菜单
     * @param menu
     * @return
     */
    boolean saveMenu(Menu menu);

    /**
     * 根据菜单ID获取菜单信息
     * @param id 菜单ID
     * @return 菜单信息 Memu
     */
    Menu getMenuById(Integer id);

    /**
     * 根据ID主键修改 菜单信息
     * @param menu 菜单信息
     * @return 操作是否成功
     */
    boolean updateMenuById(Menu menu);
}
